package com.example.order.service;

import com.example.model.domain.entity.order.OrderInfo;
import com.example.model.vo.order.OrderCountQueryVo;
import com.example.model.vo.order.OrderQueryVo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author juzipi
 * @Date 2021/7/23 20:54
 * @Info
 */
public interface OrderInfoService {


    /**

     * 查询订单
     *
     * @param orderId 订单ID
     * @return 订单
     */
    public OrderInfo selectOrderInfoById(Long orderId);


    /**

     * 新增订单
     *
     * @param orderInfo 订单
     * @return 结果
     */
    public int insertOrderInfo(OrderInfo orderInfo);

    /**

     * 修改订单
     *
     * @param orderInfo 订单
     * @return 结果
     */
    public int updateOrderInfo(OrderInfo orderInfo);

    /**

     * 批量删除订单
     *
     * @param ids 需要删除的订单ID
     * @return 结果
     */
    public int deleteOrderInfoByIds(Long[] ids);



    /**
     * 保存订单生成订单号
     * @param hosScheduleId
     * @param patientId
     * @return
     */
    Long saveOrders(String hosScheduleId, Long patientId);


    /**
     *
     * @param pageNum
     * @param pageSize
     * @param orderQueryVo
     */
    PageInfo<OrderInfo> getOrderInfoPage(Integer pageNum, Integer pageSize, OrderQueryVo orderQueryVo);

    /**
     * 取消预约
     * @param orderId
     * @return
     */
    Boolean cancelOrderById(Long orderId);

    /**
     *
     * @param orderCountQueryVo
     * @return
     */
    Map<String,Object> getOrderInfoCountMap(OrderCountQueryVo orderCountQueryVo);


    /**
     * 根据id获取订单信息（map）
     * @param orderId
     * @return
     */
    Map<String,Object> getOrderInfoMap(Long orderId);


    /**
     * 查询订单
     * @param orderId
     * @return
     */
    OrderInfo getOrderInfoById(Long orderId);

    /**
     * 提醒就诊人
     * @return
     */
    Boolean remindPatient();
}
